package com.ruoyi.system.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.User;
import com.ruoyi.system.domain.VipCardQo;
import com.ruoyi.system.domain.VipCardType;
import com.ruoyi.system.domain.vo.VipCardVo;
import com.ruoyi.system.service.IVipCardTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.VipCardMapper;
import com.ruoyi.system.domain.VipCard;
import com.ruoyi.system.service.IVipCardService;

/**
 * 会员列表Service业务层处理
 * 
 * @author slh
 * @date 2022-11-28
 */
@Service
public class VipCardServiceImpl implements IVipCardService 
{
    @Autowired
    private VipCardMapper vipCardMapper;

    @Autowired
    private UserServiceImpl userService;
    @Autowired
    private IVipCardTypeService iVipCardTypeService;

    /**
     * 查询会员列表
     * 
     * @param id 会员列表主键
     * @return 会员列表
     */
    @Override
    public VipCardVo selectVipCardById(Long id)
    {
        VipCard card = vipCardMapper.selectVipCardById(id);
        User user = userService.selectUserById(card.getUid());
        VipCardType vipCardType = iVipCardTypeService.selectVipCardTypeById(card.getCardType());
        VipCardVo vipCardVo = new VipCardVo();
        vipCardVo.setId(card.getId());
        vipCardVo.setuName(user.getUserName());
        vipCardVo.setCardType(vipCardType.getCardName());
        vipCardVo.setStatus(card.getStatus());
        vipCardVo.setMoney(card.getMoney());
        vipCardVo.setCreateTime(card.getCreateTime());
        vipCardVo.setCardUuid(card.getCardUuid());
        return vipCardVo;
    }

    /**
     * 查询会员列表列表
     *
     * @param vipCard 会员列表
     * @return 会员列表
     */
    @Override
    public List<VipCardVo> selectVipCardList(VipCard vipCard)
    {
        List<VipCard> vipCards = vipCardMapper.selectVipCardList(vipCard);
        ArrayList<VipCardVo> vo = new ArrayList<>();
        for (VipCard card : vipCards) {
            Long uid = card.getUid();
            User user = userService.selectUserById(uid);
            Long cardType = card.getCardType();
            VipCardType vipCardType = iVipCardTypeService.selectVipCardTypeById(cardType);
            VipCardVo vipCardVo = new VipCardVo();
            vipCardVo.setId(card.getId());
            vipCardVo.setuName(user.getUserName());
            vipCardVo.setCardType(vipCardType.getCardName());
            vipCardVo.setStatus(card.getStatus());
            vipCardVo.setMoney(card.getMoney());
            vipCardVo.setCreateTime(card.getCreateTime());
            vipCardVo.setCardUuid(card.getCardUuid());
            vo.add(vipCardVo);
        }
        return vo;
    }

    /**
     * 新增会员列表
     * 
     * @param vipCardQo 会员列表
     * @return 结果
     */
    @Override
    public int insertVipCard(VipCardQo vipCardQo)
    {
        VipCard vipCard = new VipCard();
        vipCard.setCardType(vipCardQo.getCardTypeId());
        vipCard.setCardUuid(UUID.randomUUID().toString());
        User user = userService.selectUserByName(vipCardQo.getuName());
        if (user == null){
            return 0;
        }
        vipCard.setUid(user.getId());
        vipCard.setMoney(vipCardQo.getMoney());
        vipCard.setCreateTime(DateUtils.getNowDate());
        return vipCardMapper.insertVipCard(vipCard);
    }

    /**
     * 修改会员列表
     * 
     * @param vipCardQo 会员列表
     * @return 结果
     */
    @Override
    public int updateVipCard(VipCardQo vipCardQo)
    {
        VipCard vipCard = new VipCard();
        vipCard.setId(vipCardQo.getId());
        vipCard.setCardType(vipCardQo.getCardTypeId());
        vipCard.setMoney(vipCardQo.getMoney());
        return vipCardMapper.updateVipCard(vipCard);
    }

    /**
     * 批量删除会员列表
     * 
     * @param ids 需要删除的会员列表主键
     * @return 结果
     */
    @Override
    public int deleteVipCardByIds(Long[] ids)
    {
        return vipCardMapper.deleteVipCardByIds(ids);
    }

    /**
     * 删除会员列表信息
     * 
     * @param id 会员列表主键
     * @return 结果
     */
    @Override
    public int deleteVipCardById(Long id)
    {
        return vipCardMapper.deleteVipCardById(id);
    }
}
